一直到現在,在瀏覽活動列表時,活動種類總是顯示 CategoryId 的數字,而不是 Enum,今天就要來解決這件事,讓列表顯示更完整。
首先需要新增引入 Enum 的 namespace:
更改欄位名稱,將原本的 DisplayNameFor
換成 @Html.DisplayName("活動類別")
:
但這樣有個問題,其他地方有使用到 Events
這個 Model 的 View 時,就必須手動再更改一次,非常的重工,有個更好的做法是在 Model 的 Property 加入 Display
這個 Attribute:
如此就不用將 View 的 DisplayNameFor
修改掉,而且這樣的設定會套用到所有的 View,如此就省去許多重工的時間。
在到 foreach
迴圈內,在 CategoryId
的部分,加入 @Enum.GetName(typeof(EventsCategoryEnum),item.CategoryId)
的 Code,Enum.GetName()
的參數,第一個參數要指定是使用哪一個 Enum,這裡放 EventsCategoryEnum
;
第二個參數則是 value,這裡將取得到的 Events.CategoryId
放進去:
在 View 中要 using 時,總是都要寫出完整的專案名稱等,我們可以在 Views 資料夾中,_ViewImports.cshtml
寫入 namespace:
Line3, 4 是我們手動引入的,再來回到 Index.cshtml
中:
分別移除了 ViewModel namespace 完整的專案名稱與 @using EventsSystem_iThome.Enum
使用 EventsCategoryEnum 時,不會有錯誤,代表是有被正常引用的:
可以看到欄位名稱與活動類型名稱都正確顯示出來了
不論是要選擇哪些資料欄位也好,或是將 ID 轉變為文字名稱也好,這都使我們的列表顯示更完整了。
明天預計會將所有 CRUD 的 Function 寫完整,完整的使用 Repository。
我們明天見 ?